/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package EJERCICIO3;

import java.util.Scanner;


/**
 *
 * @author Cliente
 */
public class AccesoDeAlmacenamiento {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int [] Arreglo = new int[15];
        //LRU(Arreglo,5);
        //MRU(Arreglo,5);
        BloquesClavados(Arreglo,6,1);
    }
    public static void Escribir(int [] A)
    {
        for(int i = 0; i< A.length; i++)
        {
            if (i==0)
            {
                System.out.print(" [  " + A[i]);
            }
            else
            {
                if(i< A.length -1)
                {
                    System.out.print("   " + A[i]);
                }
                else
                {
                    System.out.println("   " + A[i]+" ]  ");
                }
            }
        }
    }
    public static void LRU(int [] DiscoDuro, int N)
     {
         int []Memoria = new int[N];
         for(int i = 0; i< DiscoDuro.length; i++)
         {
             Memoria[i%N] = i;
             Escribir(Memoria);
         }
         
     }
     
    public static void MRU(int [] DiscoDuro, int N)
    {
        int []Memoria = new int[N];
        int j = 0; 
        for(int i = 0; i< DiscoDuro.length; i++)
         {
             if (i >= N-1)
             {
                 j=N-1;
             }
             Memoria[j] = i;
             j++;
             Escribir(Memoria);
         }
    }
    // CORREGIR!!!!!
    public static void BloquesClavados(int [] DiscoDuro, int N, int c)
    {
        int j = 0;
            int[] Memoria = new int[N];
            for (int i = 0; i < DiscoDuro.length; i++)
            {
                if (i >= N )//cuando la memoria se lleno
                {

                    if (((j % N) + c) >= N )
                    {
                        j = 0;
                    }


                    Memoria[(j % N) + (c)] = i;

                    Escribir(Memoria);
                } 
                if (i < N)
                {
                    Memoria[i] = i;
                    Escribir(Memoria);
                }
                j = j + 1;
            }
    }
    
}
